package xframe.util.mail;

import java.util.Date;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;

public class MailTransfer {

 private String from;
 private String to;
 private String filename;
 
 public MailTransfer(String from, String to, String filename) {
  this.from = from;
  this.to = to;
  this.filename = filename;
 }
 
 public void mailSend(){
  if(from == null || to == null || filename == null) {
   System.out.println("usage : java <from> <to> <filename>");
   System.exit(0);
  }
  
  try{   
   // 시스템 속성 객체 생성
   Properties props = System.getProperties();

   // POP3 메일 서버 속성 설정
   props.put("pop3.ollist.com", "118.220.172.71");

   // 메일 서버 세션 생성
   Session session = Session.getInstance(props, null);

   // 메세지 정의
   Message message = new MimeMessage(session);
   message.setFrom(new InternetAddress(from));
   message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
   message.setSubject("안녕하세요. 자바 메일 첨부 파일입니다.");

   // 메세지 몸체 생성
   BodyPart messageBodyPart = new MimeBodyPart();

   // 메세지 텍스트 내용 설정
   messageBodyPart.setText("파일 첨부 메일입니다.");
   
   // 다양한 종류의 데이터 추가를 위한 객체 생성
   Multipart multipart = new MimeMultipart();
   
   // 첫번째 메세지 몸체 추가
   multipart.addBodyPart(messageBodyPart);
   
   // 새로운 몸체 생성
   messageBodyPart = new MimeBodyPart();
   
   // 파일 객체 생성
   DataSource source = new FileDataSource(filename);
   
   // 메세지 몸체에 파일 객체 첨부
   messageBodyPart.setDataHandler(new DataHandler(source));
   
   // 파일 이름 설정
   messageBodyPart.setFileName(filename);
   
   // 두번째 메세지 몸체 추가
   multipart.addBodyPart(messageBodyPart);
   
   // Multipart 객체를  Message 객체에 추가
   message.setContent(multipart);

   // 보낸 날짜 설정..ㅡ0ㅡ;; 이거빠지니깐 에러나는데..ㅠㅠ
   message.setSentDate(new Date());
   
   // 생성된 메세지 전송
   Transport.send(message);
  }
  catch(javax.mail.MessagingException ex) {
   ex.printStackTrace();
  }
 }
}
